package com.xbongbong.pro.message.enums;

import com.xbongbong.i18n.util.I18nMessageUtil;

import com.xbongbong.pro.constant.CommonConstant;
import java.util.ArrayList;
import java.util.List;

/**
 * 推送设置中推送时间类型枚举
 * @author 魏荣杰
 * @date 2019/1/16 19:32
 * @since v1.0
 * @version v1.0
 */
public enum PushTimeTypeEnum {

	/**
	 * 提前
	 */
	ADVANCE("advance", CommonConstant.ADVANCE, 1),
	/**
	 * 延后
	 */
	DELAYED("delayed", CommonConstant.DELAYED, 2),
	/**
	 * 即时
	 */
	NOW("now", CommonConstant.NOW, 3);
	
	//可更改的字段
	
	
	/** 枚举描述 --英文名称*/
	private final String alias;
	
	/** 枚举信息--中文名称 */
	private final String name;
	
	/** 枚举值,此Enum里的code用来标记该字段是否可以更改 -- */
	private final int code;
	
	/**
	 * 构造一个<code>ApprovalEnum</code>枚举对象
	 *
	 * @param code
	 * @param name
	 * @param alias
	 */
	private PushTimeTypeEnum(String alias, String name, int code) {
		this.alias = alias;
		this.name = name;
		this.code = code;
	}

	/**
	 * @return Returns the code.
	 */
	public int getCode() {
		return code;
	}
	
	/**
	 * @return Returns the name.
	 */
	public String getName() {
		return I18nMessageUtil.getMessage(name);
	}
	
	/**
	 * @return Returns the alias.
	 */
	public String getAlias() {
		return alias;
	}

	/**
	 * 获取可以更改的字段
	 * @return
	 */
	public static List<PushTimeTypeEnum> getModifyEnum() {
		List<PushTimeTypeEnum> list = new ArrayList<>();
		for (PushTimeTypeEnum cache : values()) {
			if (1 == cache.getCode()) {
				list.add(cache);
			}
		}
		return list;
	}
}
